For the past several decades, computers have become increasingly connected. Originally, computers were stand-alone devices, each typically designed and programmed for a specific task. Soon however, the advantages of combining computers into networks became apparent. Networks of computers were able to share resources such as printers and memory and eventually even able to share, or distribute, processing tasks. For example, a search of a large database can often be broken into multiple, mutually exclusive tasks by assigning different processors and/or computers to search different segments of the database.
As computers have become increasingly interconnected, techniques have been developed to enable multiple computers to work together. One such development is JAVA®, a high-level programming language originally developed by Sun Microsystems, Inc. of Mountain View, Calif. JAVA® enables programmers to develop code that is platform independent. Simply stated, code written in the JAVA® programming language is converted, or “interpreted,” into actual computer instructions corresponding to a particular computer by a JAVA® Virtual Machine (JVM) that executes on the computer. In other words, by installing a JVM that corresponds to particular computer hardware and the associated operating system, a programmer can write code without regard to the particular hardware and operating system.
In addition to the increased connectivity of traditional computers, many devices that incorporate computing components have also become both inter-connected and JAVA®-enabled. Examples include Internet, or “web,” telephones, cable boxes and televisions and application clients and servers. To facilitate the management of such JAVA®-enable resources, JAVA® Management Extensions (JMX) has been developed. JMX is a standard for managing and monitoring devices, applications and services in a JAVA environment. JMX defines a management architecture, design patterns, application programming interfaces (APIs), and services for building web-based, distributes, dynamic and modular solutions to manage JAVA® resources and programming objects.
JMX provides for the creation and implementation of JAVA® managed beans, or “Mbeans,” which are programming objects that represent objects to be managed. Each Mbean has a management interface that enables a user or program to monitor, manage and be notified of changes to particular configuration parameters of a corresponding resource. For example, an Mbean representing an application may include attributes and methods corresponding to the application's cache size. In this example, reading a “cacheSize” attribute would return the application's cache size and writing a “cacheSize” attribute would update the size of the application's cache, thus changing the application's configuration.
Although the JMX specification has been updated to include invocation in a multi-user, distributed environment, a JMX Mbean is typically a singleton object. In other words, a specific Mbean accessed by multiple clients is not able to store state information corresponding to any particular invocation related to a specific client. Further, end users seeking to invoke a method of a JMX managed Mbean must do so via a JMX MbeanServer interface. This method of invocation requires several lines of JAVA® code to construct an argument list and an associate argument datatype list. What is needed is a method for employing a JMX Mbean that simplifies the construction of both the argument and datatype lists and enables the user to maintain state information so that multiple clients can access the same Mbean object without conflict.